from auth.decorators import login_required
from django.shortcuts import render_to_response
from core.models import Grupo
from clickers.models import Clicker, Opcion
from django.contrib.auth.models import User
from django.template import RequestContext
from django.http import HttpResponseRedirect, HttpResponse
from django.views.decorators.csrf import csrf_exempt

def menu(request):
	usuario = request.user
	if usuario.is_superuser:
		return render_to_response('clickers/menu.html')
	else:
		return render_to_response('clickers/menu2.html')

@login_required
def index(request):
	usuario = request.user
	if usuario.is_superuser:
		return render_to_response('clickers/clickers.html')
	else:
		return render_to_response('clickers/clickers2.html')
		
		
#Vista que dirije hacia el template para crear un nuevo clicker
#Parametros: Grupos - Utilizados para seleccionar un grupo asociado al clicker

@login_required
def crear_clicker(request):
	g = Grupo.objects.all()
	u = User.objects.all()
	return render_to_response('clickers/crear_clicker.html', {'grupos': g})
	

#Vista que procesa la informacion enviada del template de crear clicker
@login_required
@csrf_exempt
#Vista que procesa la informacion enviada del template de crear clicker
def guardar_clicker(request):
	if request.method=='POST':

		selected_choice = request.POST['receiveVia']
		nom = request.POST['pregunta']
		grupo_asoc = request.POST['grupo_asociado'] 
		g = Grupo.objects.all()
		
		for i in g:
			if grupo_asoc == i.nombre:
				instancia_grupo=i;
		
		usuario = request.user
		nombre1 = request.POST['theName1']
		nombre2 = request.POST['theName2']
		nombre3 = request.POST['theName3']
		nombre4 = request.POST['theName4']
		nombre5 = request.POST['theName5']
		new_clicker = Clicker(pregunta=nom, grupo_asociado=instancia_grupo, creador=usuario)
		new_clicker.save()
		
		if ( selected_choice =='opcion1'):
			new_opcion1=Opcion(clicker=new_clicker,nombre=nombre1,votos=0)
			new_opcion1.save()
		if(selected_choice=='opcion2'):
			new_opcion1=Opcion(clicker=new_clicker,nombre=nombre1,votos=0)
			new_opcion2=Opcion(clicker=new_clicker,nombre=nombre2,votos=0)
			new_opcion1.save()
			new_opcion2.save()
		if(selected_choice=='opcion3'):
			new_opcion1=Opcion(clicker=new_clicker,nombre=nombre1,votos=0)
			new_opcion2=Opcion(clicker=new_clicker,nombre=nombre2,votos=0)
			new_opcion3=Opcion(clicker=new_clicker,nombre=nombre3,votos=0)
			new_opcion1.save()
			new_opcion2.save()
			new_opcion3.save()
		if(selected_choice=='opcion4'):
			new_opcion1=Opcion(clicker=new_clicker,nombre=nombre1,votos=0)
			new_opcion2=Opcion(clicker=new_clicker,nombre=nombre2,votos=0)
			new_opcion3=Opcion(clicker=new_clicker,nombre=nombre3,votos=0)
			new_opcion4=Opcion(clicker=new_clicker,nombre=nombre4,votos=0)
			new_opcion1.save()
			new_opcion2.save()
			new_opcion3.save()
			new_opcion4.save()
		if(selected_choice=='opcion5'):
			new_opcion1=Opcion(clicker=new_clicker,nombre=nombre1,votos=0)
			new_opcion2=Opcion(clicker=new_clicker,nombre=nombre2,votos=0)
			new_opcion3=Opcion(clicker=new_clicker,nombre=nombre3,votos=0)
			new_opcion4=Opcion(clicker=new_clicker,nombre=nombre4,votos=0)
			new_opcion5=Opcion(clicker=new_clicker,nombre=nombre5,votos=0)
			new_opcion1.save()
			new_opcion2.save()
			new_opcion3.save()
			new_opcion4.save()
			new_opcion5.save()
	
	return HttpResponse("Clicker creado")

#Vista que procesa la informacion de la edicion de un clicker
@login_required
def modificar_clicker(request, clicker_id):
    if request.method == 'POST':
        c = get_object_or_404(Clicker, pk=clicker_id)
        c.pregunta = POST['id_nombre_pregunta']
        c.save()
    return HttpResponser("Cambios guardados")
    
#Vista que procesa la informacion actualizada del tepmlate de editar clicker
@login_required
def editar_clicker(request,clicker_id):
    c = get_object_or_404(Clicker, pk=clicker_id)

def coleccion_clicker(request):
	g = Grupo.objects.all()
	c = Clicker.objects.all()
	return render_to_response('clickers/coleccion_clickers.html', {'grupos': g, 'clickers': c})

def enviar_clicker(request,clicker_id):
    c = get_object_or_404(Clicker, pk = clicker_id)
    try:
        selected_choice = c.opcion_set.get(pk=request.POST['choice'])
    except (KeyError, Opcion.DoesNotExist):
        return render_to_response('clicker/enviar_clicker.html',{
   'clicker':c,
   'error_message':"You didn't select a choice.",
  },context_instance=RequestContext(request))
    else:
        selected_choice.votos += 1
        selected_choice.save()
        return HttpResponseRedirect(reverse('clicker.views.ver_resultados',args=(c.id,)))

#Vista simple del template para ver los resultados de cada opcion del clicker seleccionado
def ver_resultados(request,clicker_id):
    c = get_object_or_404(Clicker,pk=clicker_id)
    return render_to_response('clicker/ver_resultados.html',{'clicker':c})


